The present invention generally relates to allocating computing resources for performing a plurality of computing tasks, and more particularly to allocating the computing resources of networked systems for performing the computing tasks.
The configuration of information systems in many of today""s businesses and other organizations includes a network having dedicated client microcomputers and workstations for various personnel, server computers for printing and for storage of data and software, systems for off-loading computing tasks from the microcomputers, and systems for maintaining business and personnel records. While the proliferation of microcomputers has to some extent increased productivity, there has also been a decrease in computing efficiency.
The level of computing resources, for example, CPU cycles and memory, required by various computing tasks greatly varies depending upon the nature of the task. For example, word processing tasks can generally be run on a microcomputer that is dedicated to a particular person. Simulation tasks such as those for simulating the operation of a circuit, on the other hand, generally require relatively large levels of computing resources. Thus, simulation tasks are often performed on systems other than the microcomputers.
Oftentimes, additional hardware is procured when additional computing tasks are required. For example, when new personnel are added to an organization, additional microcomputers and/or workstations are deployed for the personnel. These workstations are likely to be idle during non-work hours. When simulation is required for new circuits, a new system may be added if the computational resources of a particular, preferred machine are insufficient. A problem with this scenario is that resources may be wasted since the environment as a whole may have sufficient computing resources to perform the additional computing tasks, even though a preferred machine may already be fully utilized. A system and method that address the aforementioned problems, as well as other related problems, are therefore desirable.
In various embodiments, the invention provides a method and system for distributing by a server data processing system computing tasks for execution amongst a plurality of client data processing systems having different resource characteristics. Each task includes one or more subtasks, and each subtask has one or more resource requirements. Each of the clients requests from the server a subtask upon occurrence of a first event, for example, an idle machine. The server, in response to a request from a client, selects a subtask for execution by the client as a function of the resource requirements of the subtask and the particular resource characteristics of the client.
The above summary of the present invention is not intended to describe each disclosed embodiment of the present invention. The figures and detailed description that follow provide additional example embodiments and aspects of the present invention.